import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * clase que crea la imagen de la explosion de una bomba
 * 
 * @author Omar Espino 
 * @version 20/11/2014
 */
public class Explosion extends Armas
{
    private SimpleTimer duracionExplosion;

    public Explosion()
    {
        duracionExplosion=new SimpleTimer();    
    }

    /**metodo principal en el cual actuara la explosion*/
    public void act() 
    {
        if(duracionExplosion.millisElapsed()>1500)
        {
            getWorld().removeObject(this);
        }
        else
        {
            if(isTouching(Enemigo.class)) 
            {
                removeTouching(Bolanieve.class);
                removeTouching(Llama.class);
                matarFocaPorExplosion();
                matarOsoPorExplosion();
                matarTeroPorExplosion();
                atacaJefe();
            }
        }
    }

    /**metodo para matar una foca por medio de la explosion*/
    public void matarFocaPorExplosion()
    {
        MundoIceClimber mundo=(MundoIceClimber)getWorld();

        if(isTouching(Foca.class))
        {
            Foca foca1=(Foca)getOneIntersectingObject(Foca.class);;
            getWorld().removeObject(foca1);
            mundo.getCartelPuntos().add(150);
           
            mundo.getPersonaje().aumentaFocasMuertas();
        }
    }

    /**metodo para matar osos por medio de la explosion*/
    public void matarOsoPorExplosion()
    {
        MundoIceClimber mundo=(MundoIceClimber)getWorld();
        if(isTouching(Osopolar.class))
        {
            int x,y;
            Osopolar oso1=(Osopolar)getOneIntersectingObject(Osopolar.class);
            x=oso1.getX();
            y=oso1.getY();
            oso1.setSangre(100);

            if(oso1.getSangre()<=0)
            {
                getWorld().removeObject(oso1);
                mundo.getCartelPuntos().add(200);
           
                if(Greenfoot.getRandomNumber(2)==1)
                {
                    Bombas pack=new Bombas();
                    getWorld().addObject(pack,x,y);
                }
                mundo.getPersonaje().aumentaOsosMuertos();
            }

        }

    }

    /**metodo para matar un terodactilo por medio de la explosion*/
    public void matarTeroPorExplosion()
    {
        MundoIceClimber mundo=(MundoIceClimber)getWorld();

        if(isTouching(Terodactilo.class))
        {
            Terodactilo tero1=(Terodactilo)getOneIntersectingObject(Terodactilo.class);;
            getWorld().removeObject(tero1);
            mundo.getCartelPuntos().add(150); 
            mundo.getPersonaje().aumentaTerodactilosMuertos();
        }
    }
    
    /**metodo que le baja vida al jefe segun el daño de la explosion*/
    public void atacaJefe()
    {
        MundoIceClimber mundo=(MundoIceClimber)getWorld();
        if(isTouching(Jefe.class))
        {
            mundo.getJefe().setHealt(250);
            mundo.getCartelPuntos().add(200); 
            mundo.removeObject(this);
        }
    }
}
